<?php

//Classe que controla as ações de CRUD dos Empreendimentos
class Empreendimento {

    public function post_save($empreendimento) {

        //update atualização caso exista um id
        if ($empreendimento->id) {

            try {

                $sqlUpdate = "UPDATE empreendimento SET nome=:nome,incorporacao=:incorporacao,endereco=:endereco,bairro=:bairro,numero=:numero,
                    cidade=:cidade,uf=:uf,pontoReferencia=:pontoReferencia,qtdAptos=:qtdAptos,qtdBox=:qtdBox,qtdDepositos=:qtdDepositos,
                    qtdLojas=:qtdLojas,areaTotal=:areaTotal,observacoes=:observacoes WHERE id = :id";

                $stmtUpdate = DB::prepare($sqlUpdate);
                $stmtUpdate->bindParam("id", $empreendimento->id);
                $stmtUpdate->bindParam("nome", $empreendimento->nome);
                $stmtUpdate->bindParam("incorporacao", $empreendimento->incorporacao);
                $stmtUpdate->bindParam("endereco", $empreendimento->endereco);
                $stmtUpdate->bindParam("bairro", $empreendimento->bairro);
                $stmtUpdate->bindParam("numero", $empreendimento->numero);
                $stmtUpdate->bindParam("cidade", $empreendimento->cidade);
                $stmtUpdate->bindParam("uf", $empreendimento->uf);
                $stmtUpdate->bindParam("pontoReferencia", $empreendimento->pontoReferencia);
                $stmtUpdate->bindParam("qtdAptos", $empreendimento->qtdAptos);
                $stmtUpdate->bindParam("qtdBox", $empreendimento->qtdBox);
                $stmtUpdate->bindParam("qtdDepositos", $empreendimento->qtdDepositos);
                $stmtUpdate->bindParam("qtdLojas", $empreendimento->qtdLojas);
                $stmtUpdate->bindParam("areaTotal", DB::decimalToMySql($empreendimento->areaTotal));
                $stmtUpdate->bindParam("observacoes", $empreendimento->observacoes);
                $stmtUpdate->execute();
            }
            catch (Exception $exc) {
                throw new Exception($exc->getMessage());
            }
        }
        //insert, grava as informações caso não exista id 
        else {
            //Se já existir um empreendimento com mesmo nome    
            $sqlRegistroDuplo    = "SELECT id,nome FROM empreendimento where (nome =:nome)";
            $stmtRegistroDuplo   = DB::prepare($sqlRegistroDuplo);
            $stmtRegistroDuplo->bindValue("nome", $empreendimento->nome);
            $stmtRegistroDuplo->execute();
            $empreendimentoDuplo = $stmtRegistroDuplo->fetch();
            if ($empreendimentoDuplo)
                throw new Exception("Ops! Este Empreendimento Já Existe.");
            //Se não existir empreendimento com o mesmo nome segue

            try {
                $sqlInsert = "INSERT INTO empreendimento (nome,incorporacao,endereco,bairro,numero,cidade,uf,pontoReferencia,qtdAptos,qtdBox,qtdDepositos,
                qtdLojas,areaTotal,observacoes) VALUES (:nome,:incorporacao,:endereco,:bairro,:numero,:cidade,:uf,:pontoReferencia,:qtdAptos,:qtdBox,
                :qtdDepositos,:qtdLojas,:areaTotal,:observacoes)";

                $stmtInsert = DB::prepare($sqlInsert);
                $stmtInsert->bindParam("nome", $empreendimento->nome);
                $stmtInsert->bindParam("incorporacao", $empreendimento->incorporacao);
                $stmtInsert->bindParam("endereco", $empreendimento->endereco);
                $stmtInsert->bindParam("bairro", $empreendimento->bairro);
                $stmtInsert->bindParam("numero", $empreendimento->numero);
                $stmtInsert->bindParam("cidade", $empreendimento->cidade);
                $stmtInsert->bindParam("uf", $empreendimento->uf);
                $stmtInsert->bindParam("pontoReferencia", $empreendimento->pontoReferencia);
                $stmtInsert->bindParam("qtdAptos", $empreendimento->qtdAptos);
                $stmtInsert->bindParam("qtdBox", $empreendimento->qtdBox);
                $stmtInsert->bindParam("qtdDepositos", $empreendimento->qtdDepositos);
                $stmtInsert->bindParam("qtdLojas", $empreendimento->qtdLojas);
                $stmtInsert->bindParam("areaTotal", DB::decimalToMySql($empreendimento->areaTotal));
                $stmtInsert->bindParam("observacoes", $empreendimento->observacoes);
                $stmtInsert->execute();
            }
            catch (Exception $exc) {
                throw new Exception($exc->getMessage());
            }
        }
    }

    //Função para remover empreedimento do sistema
    public function post_delete($empreendimento) {
        try {
            $sqlDelete  = "DELETE FROM empreendimento WHERE id = :id";
            $stmtDelete = DB::prepare($sqlDelete);
            $stmtDelete->bindParam("id", $empreendimento->id);
            $stmtDelete->execute();
        }
        catch (Exception $exc) {
            throw new Exception($exc->getMessage());
        }
    }

    //Lista os empreendimentos cadastrados no sistema
    public function get_listAll() {
        try {
            $sqlListAll = "SELECT id,nome,incorporacao,areaTotal FROM empreendimento";

            $smtpListAll = DB::prepare($sqlListAll);
            //$smtpList->bindValue('', $empreendimento->nome);
            $smtpListAll->execute();
            return $smtpListAll->fetchAll();
        }
        catch (Exception $exc) {
            throw new Exception($exc->getMessage());
        }
    }

    //Lista retorna um empreendimento pelo id para atualização
    public function get_list($id) {
        try {

            $sqlList = "SELECT * FROM empreendimento WHERE id = :id";

            $smtpList = DB::prepare($sqlList);
            $smtpList->bindParam('id', $id);
            $smtpList->execute();
            return $smtpList->fetch();
        }
        catch (Exception $exc) {
            throw new Exception($exc->getMessage());
        }
    }

}

?>
